package com.itheima.d1_collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

//目标：了解迭代器遍历集合并用集合容器删除数据时的并发修改异常
public class Demo04 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("吴某凡");
        list.add("罗某祥");
        list.add("蔡某坤");
        list.add("王某宏");
        list.add("李某峰");

        //需求：利用迭代器遍历集合list，当遍历出"蔡某坤"时，删除该数据
        //获取迭代器
        Iterator<String> it = list.iterator();

        //循环遍历，先判断再获取
        while (it.hasNext()) {
            String data = it.next();

            //判断拿出的字符串是否是"蔡某坤"
            if ("蔡某坤".equals(data)) {
                //条件成立，调用集合的删除方法删除数据
                //list.remove("蔡某坤");

                //如果非要做删除操作，不希望报并发修改异常，就使用迭代器的删除功能
                it.remove();
            }
        }

        //结论：用迭代器遍历集合，不要用集合的删除功能，不然会报错：ConcurrentModificationException，并发修改异常！
        System.out.println(list);
    }
}
